package com.gcxy.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gcxy.core.R;
import com.gcxy.dto.resources.AddResourceDTO;
import com.gcxy.dto.resources.ResourcePageDTO;
import com.gcxy.dto.resources.UpdateResourceDTO;
import com.gcxy.entity.Resource;
import com.gcxy.vo.resource.ResourceVO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author pep7chiao
 * @since 2022-09-27
 */
public interface ResourceService extends IService<Resource> {

    /**
     * 获取所有封装好的资源权限
     *
     * @return 已封装的资源权限
     */
    List<ResourceVO> getResourceList();

    /**
     * 根据角色ID获取对应的资源权限（资源树）
     *
     * @param roleId 角色ID
     * @return 角色对应的资源权限ID集合
     */
    List<ResourceVO> getResourceByRoleId(Integer roleId);

    /**
     * 根据角色ID获取对应的资源权限（扁平）
     *
     * @param roleId 角色ID
     * @return 角色对应的资源权限ID集合
     */
    List<ResourceVO> getResourceListByRoleId(Integer roleId);

    /**
     * 根据条件查询资源
     *
     * @param resourcePageDTO 查询条件对象
     * @return 资源结果对象
     */
    List<ResourceVO> getResourceByCondition(ResourcePageDTO resourcePageDTO);

    /**
     * 更新资源
     *
     * @param updateResourceDTO 更新的资源数据对象
     * @return 更新结果
     */
    R<?> UpdateResource(UpdateResourceDTO updateResourceDTO);

    /**
     * 新增资源
     *
     * @param addResourceDTO 新增的资源数据对象
     * @return 新增结果
     */
    R<Void> insertResource(AddResourceDTO addResourceDTO);

    /**
     * 更加ID删除资源
     *
     * @param id 要删除的资源id
     * @return 删除结果
     */
    R<?> deleteResourceById(Integer id);
}
